home *** CD-ROM | disk | FTP | other *** search
/ Softdisk G-S 89 / SGDS 89.2mg / SDGS.89 / SDC89 / C / WAM (.txt) < prev    next >
Encoding:
Applesoft BASIC Source Code  |  1989-01-21  |  13.0 KB  |  429 lines  |  [FC] Applesoft BASIC Program (0x0801)

  1. 10  PRINT  CHR$(21);: TEXT : HOME 
  2. 20  ROT= 0: SPEED= 255
  3. 30  PRINT  CHR$(4)"-WAM.PAK"
  4. 35  LOMEM: 27904
  5. 40  PRINT  CHR$(4)"BRUN WAM.ML"
  6. 45  POKE 48688, PEEK(0): POKE 48689, PEEK(1)
  7. 46  INVERSE : VTAB 21: HTAB 4: PRINT "(C)1989, published on Softdisk 89": VTAB 22: HTAB 4: PRINT "Subscriptions:1-800-831-2694.": VTAB 23: HTAB 4: PRINT "Changing this notice is illegal."
  8. 47 P1 =  PEEK(0):P2 =  PEEK(1)
  9. 50  DIM S%(12),D%(12),ME$(12),SB$(128),CH$(10),A$(63)
  10. 51  FOR I = 1 TO 3000: NEXT 
  11. 55  FOR I = 0 TO 63: READ A$(I): NEXT 
  12. 60 MF$ = ""
  13. 65 UP$ = "^":DN$ = "`": IF  PEEK(49048) <128  THEN UP$ = "<":DN$ = ">"
  14. 70 CH$(1) = ".":CH$(2) = "|":CH$(3) = "X":CH$(4) = "#":CH$(5) = "$":CH$(6) = ":":CH$(7) = "*":CH$(8) = "+":CH$(9) = "=":CH$(0) = " "
  15. 80 GIMME = 25603:BOX = 25600
  16. 81 SHAD = 0:DIAL = 1:BUTN = 2:INPT = 3
  17. 82 GARB = 26112:DARW = 26115:MANO = 26118:COLR = 26121
  18. 84  PRINT  CHR$(4)"PREFIX": INPUT PF$
  19. 90  HCOLOR= 3: HPLOT 0,0: CALL 62454: CALL 54915: POKE 216,0: PRINT  CHR$(20);
  20. 91  CALL MANO
  21. 92 WHERE = 0
  22. 94  ONERR  GOTO 60000
  23. 95  INVERSE : VTAB 1: HTAB 14: PRINT "What A Message!";
  24. 96  HCOLOR= 0: HPLOT 0,8 TO 279,8
  25. 100 ME$(0) = "MAIN MENU":ME$(1) = "Load Message":ME$(2) = "Edit Message":ME$(3) = "Print Message":ME$(4) = "Save Message":ME$(5) = "Quit":MX = 5: GOSUB 2000
  26. 110  ON MI GOTO 3000,4000,6000,7000,300
  27. 120  GOTO 90
  28. 300  CALL BOX,11,3,20,3: HOME : INVERSE : HTAB 3: PRINT "QUIT PROGRAM";
  29. 310 WHERE = 5
  30. 315  CALL BOX,6,6,30,15
  31. 320  CALL BOX,5,21,32,4: HOME : PRINT "Press RETURN to quit,": PRINT "ESC to go back.";
  32. 330  POKE  -16368,0: GET K$: IF K$ =  CHR$(13)  THEN  PRINT  CHR$(20): PRINT  CHR$(12): HOME : TEXT : CALL COLR: PRINT  CHR$(4)"BYE"
  33. 340  IF K$ < > CHR$(27)  THEN 330
  34. 350  GOTO 90
  35. 1980  END 
  36. 1990  REM   MX - option menu
  37. 2000  CALL BOX,11,3,20,3: HOME : INVERSE : PRINT  SPC( 9 - LEN(ME$(0))/2)ME$(0);
  38. 2010  CALL BOX,5,21,32,4: HOME : PRINT "Use arrows to move highlight.": PRINT "Press RETURN to select item.";
  39. 2020  POKE  -16368,0
  40. 2030  CALL BOX,6,6,30,15
  41. 2040  FOR MI = 1 TO MX: GOSUB 2190: NEXT 
  42. 2080 MI = 1
  43. 2090  GOSUB 2220
  44. 2095  IF  VAL(TT$)  THEN  IF  VAL(TT$) < = MX  THEN MI =  VAL(TT$)
  45. 2100  IF TT$ =  CHR$(8)  OR TT$ =  CHR$(11)  THEN MI = MI -1: IF MI <1  THEN MI = MX
  46. 2110  IF TT$ =  CHR$(21)  OR TT$ =  CHR$(10)  THEN MI = MI +1: IF MI >MX  THEN MI = 1
  47. 2115  IF TT$ =  CHR$(27)  AND ME$(0) = "MAIN MENU"  THEN 2090
  48. 2120  IF TT$ =  CHR$(27)  THEN MI = 0: GOTO 2140
  49. 2130  IF TT$ < > CHR$(13)  THEN 2090
  50. 2140  PRINT  CHR$(20);: RETURN 
  51. 2150  GOTO 2090
  52. 2160  GOSUB 1890
  53. 2170  VTAB 17: HTAB 1: PRINT  SPC( 55): GOTO 2090
  54. 2180  REM 
  55. 2190  VTAB 8 +MI: HTAB 3
  56. 2200  PRINT " "MI". "ME$(MI)" ";
  57. 2210  RETURN 
  58. 2220  REM  getbaby
  59. 2230  POKE  -16368,0
  60. 2240  NORMAL : GOSUB 2180
  61. 2250  FOR PA = 0 TO 20: IF  PEEK(49152) <128  THEN  NEXT 
  62. 2260  INVERSE : GOSUB 2180
  63. 2270  FOR PA = 0 TO 20: IF  PEEK(49152) <128  THEN  NEXT : GOTO 2240
  64. 2280  GET TT$
  65. 2290  RETURN 
  66. 2990  REM <CTRL-0x0a>========= LOAD MESSAGE =========<CTRL-0x0a>
  67. 3000  PRINT  CHR$(20);: VTAB 1: HTAB 1: PRINT "ESC:Go back";
  68. 3005 WHERE = 1
  69. 3010 ME$(0) = "LOAD MESSAGE":ME$(1) = "Set Prefix":ME$(2) = "Load message":ME$(3) = "Catalog of Files":ME$(4) = "Catalog of Messages":ME$(5) = "Exit":MX = 5: GOSUB 2000
  70. 3020  ON MI GOTO 10000,3100,12000,13000,90
  71. 3030  GOTO 90
  72. 3100 S$ = "LOAD MESSAGE FILE": GOTO 30000
  73. 3110  ONERR  GOTO 60000
  74. 3120  PRINT  CHR$(4)"BLOAD "SB$(CS +TP)",A$6900,l771,TTXT"
  75. 3125 MF$ = SB$(CS +TP)
  76. 3130  GOTO 3000
  77. 3990  REM <CTRL-0x0a>========= EDIT MESSAGE =========
  78. 4000  PRINT  CHR$(20);: VTAB 1: HTAB 1: PRINT "ESC:Menu";
  79. 4010 WHERE = 2
  80. 4020  VTAB 1: HTAB 35: PRINT "Edit";
  81. 4025  PRINT  CHR$(20);: POKE 34,2: PRINT  CHR$(12) CHR$(20);
  82. 4027  HCOLOR= 0: HPLOT 0,183 TO 279,183
  83. 4030  VTAB 3: HTAB 35: PRINT "Move": VTAB 4: HTAB 35: PRINT "cursor": VTAB 5: HTAB 35: PRINT "and": VTAB 6: HTAB 35: PRINT "type": VTAB 7: HTAB 35: PRINT "text."
  84. 4031  VTAB 14: HTAB 35: PRINT "Move";: VTAB 15: HTAB 35: PRINT "  "UP$;: VTAB 16: HTAB 35: PRINT "  |";: VTAB 17: HTAB 35: PRINT "[-\-]";: VTAB 18: HTAB 35: PRINT "  |";: VTAB 19: HTAB 35: PRINT "  "DN$;
  85. 4032  VTAB 21: HTAB 35: PRINT "CtrlA=";: VTAB 22: HTAB 35: PRINT "toggle";
  86. 4033  VTAB 10: HTAB 35: PRINT "CtrlW=";: VTAB 11: HTAB 35: PRINT "Wipe";
  87. 4040  VTAB 24: HTAB 2: PRINT "One moment...": POKE 34,1: POKE 35,23: POKE 32,1: POKE 33,32: NORMAL : PRINT  CHR$(12);
  88. 4043  HOME 
  89. 4045  IF MF$ = ""  THEN MF$ = "Untitled": GOTO 4069
  90. 4050  FOR X = 1 TO 32: FOR Y = 1 TO 22
  91. 4055  GOSUB 4800
  92. 4060  NEXT Y: NEXT X
  93. 4069  INVERSE : VTAB 24: HTAB 1: PRINT  SPC( 30);: HTAB 1: PRINT "Editing:"MF$;: NORMAL 
  94. 4070 X = 1:Y = 1
  95. 4080  VTAB Y +1: HTAB X: INVERSE : SPEED= 252: PRINT " ";
  96. 4090  GOSUB 20000
  97. 4100  VTAB Y +1: HTAB X: PRINT " ";: SPEED= 255: NORMAL 
  98. 4105 YA = 0
  99. 4110  IF K$ =  CHR$(27)  THEN 90
  100. 4120  IF K$ =  CHR$(8)  THEN YA = 1: IF X >1  THEN X = X -1
  101. 4130  IF K$ =  CHR$(21)  THEN YA = 1: IF X <32  THEN X = X +1
  102. 4140  IF K$ =  CHR$(11)  OR K$ = ","  THEN YA = 1: IF Y >1  THEN Y = Y -1
  103. 4150  IF K$ =  CHR$(10)  OR K$ = "."  THEN YA = 1: IF Y <22  THEN Y = Y +1
  104. 4151  IF K$ =  CHR$(13)  AND Y <17  THEN Y = Y +6:X = 1:YA = 1
  105. 4152  IF K$ =  CHR$(9)  AND X <27  THEN X = X +6:YA = 1
  106. 4155  IF (YA)  THEN 4080
  107. 4157  IF K$ =  CHR$(23)  THEN 4200
  108. 4160  IF K$ =  CHR$(1)  THEN 4500
  109. 4165  IF K$ > = "a"  AND K$ < = "z"  THEN K$ =  CHR$( ASC(K$) -32)
  110. 4170  IF K$ > = " "  AND K$ <"`"  THEN 4600
  111. 4175  IF K$ <" "  THEN P = 40:D = 3: GOSUB 62000
  112. 4180  GOTO 4080
  113. 4200  INVERSE : VTAB 24: HTAB 1: PRINT  SPC( 30);: VTAB 24: HTAB 2: PRINT "Really wipe the screen (y/n)?";
  114. 4201 P = 50:D = 10: GOSUB 62000
  115. 4202  GET K$: IF K$ = "N"  OR K$ = "n"  THEN 4069
  116. 4203  IF K$ < >"Y"  AND K$ < >"y"  THEN 4202
  117. 4204  VTAB 24: HTAB 1: PRINT  SPC( 30);: VTAB 24: HTAB 4: PRINT "Wiping screen...": VTAB 12: HTAB 10: PRINT " One moment ";: NORMAL 
  118. 4205  FOR X = 1 TO 32: FOR Y = 1 TO 22:Q$ = " ": GOSUB 5000: NEXT Y: NEXT X: GOTO 4069
  119. 4500 KK =  PEEK(26880 +(22 -Y) *35 +(33 -X)):KK =  -KK +74
  120. 4510  VTAB Y +1: HTAB X: NORMAL : PRINT  CHR$(KK);
  121. 4520  POKE 26880 +(22 -Y) *35 +(33 -X),KK
  122. 4530  GOTO 4080
  123. 4600  IF X >28  OR Y >18  THEN P = 40:D = 3: GOSUB 62000: GOTO 4080
  124. 4605 SX = X:SY = Y
  125. 4610 S$ = A$( ASC(K$) -32)
  126. 4620  FOR I = 1 TO 5:K =  ASC( MID$ (S$,I,1)) -64
  127. 4630 Q$ = ""
  128. 4640  FOR J = 4 TO 0  STEP  -1
  129. 4650 T =  INT(K/(2 ^J)): IF T  THEN Q$ = "*":K = K -(2 ^J): GOTO 4670
  130. 4660 Q$ = " "
  131. 4670 X = SX +J:Y = SY +I -1: GOSUB 5000
  132. 4690  NEXT J
  133. 4695  IF SX <28  THEN X = SX +5:Q$ = " ": GOSUB 5000
  134. 4700  NEXT I
  135. 4705  IF SY <18  THEN Y = SY +5:X = SX:Q$ = " ": FOR Q = 0 TO 4: GOSUB 5000:X = X +1: NEXT Q
  136. 4706  IF SX <28  AND SY <18  THEN Q$ = " ": GOSUB 5000
  137. 4710 X = SX:Y = SY
  138. 4720 X = X +6: IF X >32  THEN X = 1:Y = Y +6: IF Y >22  THEN Y = 1
  139. 4730  GOTO 4080
  140. 4800  VTAB Y +1: HTAB X: PRINT  CHR$( PEEK(26880 +(22 -Y) *35 +(33 -X)));: RETURN 
  141. 5000  VTAB Y +1: HTAB X: NORMAL : PRINT Q$;
  142. 5010  POKE 26880 +(22 -Y) *35 +(33 -X), ASC(Q$)
  143. 5020  RETURN 
  144. 5500 PR = 0: IF  PEEK(48912 +(SL -1) *2) < >172  OR  PEEK(48913 +(SL -1) *2) < >222  THEN 5600
  145. 5510 MZ =  PEEK(49048):MZ = MZ -( INT(MZ/4) *4): IF MZ >1  AND SL = 3  THEN 5600
  146. 5515  IF  PEEK(49164 +SL *256) = 32  OR  PEEK(49403 +SL *256) = 214  THEN 5600
  147. 5520  IF ( PEEK(49153 +SL *256) < >32  OR  PEEK(49155 +SL *256) < >0  OR  PEEK(49157 +SL *256) < >3  OR  PEEK(49159 +SL *256) < >60)  THEN  IF  PEEK(49159 +SL *256) < >0  THEN PR = 1
  148. 5600  RETURN 
  149. 5990  REM <CTRL-0x0a>========= PRINT MESSAGE =========
  150. 6000  CALL BOX,11,3,20,3: HOME : INVERSE : HTAB 3: PRINT "PRINT MESSAGE";
  151. 6010 WHERE = 3
  152. 6020  CALL BOX,5,21,32,4: HOME : PRINT "Use arrows to move highlight.": PRINT "Press RETURN to select slot.";
  153. 6030  POKE  -16368,0
  154. 6040  CALL BOX,6,6,30,15
  155. 6050 MX = 0
  156. 6060  FOR SL = 1 TO 7: GOSUB 5500: IF PR  THEN MX = MX +1:ME$(MX) = "Slot " + STR$(SL)
  157. 6070  NEXT SL
  158. 6080 ME$(0) = "PRINT MESSAGE": GOSUB 2000
  159. 6090  IF MI = 0  THEN 90
  160. 6095  CALL BOX,6,6,30,15: HOME : PRINT "Turn on your printer.": PRINT : PRINT "Press a key.": POKE  -16368,0: GET K$: ON K$ =  CHR$(27) GOTO 90
  161. 6100  PRINT  CHR$(20);: HOME : TEXT : HOME 
  162. 6105 P1 =  PEEK(48688):P2 =  PEEK(48689): POKE 48688,240: POKE 48689,253
  163. 6110  NORMAL : PRINT "PRINTING...": PRINT "[ESC] TO CANCEL."
  164. 6115 SX = X:SY = Y
  165. 6120  ONERR  GOTO 6200
  166. 6130 SL =  VAL( RIGHT$(ME$(MI),1))
  167. 6140  PRINT  CHR$(4)"PR#"SL
  168. 6145  PRINT "What a Message! (c)1988 Softdisk" SPC( 39 - LEN(MF$))"MESSAGE:"MF$: PRINT "==============================================================================="
  169. 6147  PRINT : PRINT "**************************************": PRINT "*" SPC( 36)"*": PRINT "*" SPC( 36)"*"
  170. 6150  FOR Y = 1 TO 22: PRINT "*  ";: FOR X = 1 TO 32
  171. 6155  IF  PEEK( -16384) = 155  THEN 6200
  172. 6160  GOSUB 6500
  173. 6170  NEXT X: PRINT "  *": NEXT Y
  174. 6180  PRINT "*" SPC( 36)"*": PRINT "*" SPC( 36)"*": PRINT "**************************************"
  175. 6200  PRINT  CHR$(12);: PRINT  CHR$(4)"PR#0": POKE  -16368,0
  176. 6210  POKE 48688,P1: POKE 48689,P2: POKE  -16297,0: POKE  -16304,0: POKE  -16299,0
  177. 6220  GOTO 90
  178. 6490  REM <CTRL-0x0a>PRINT ONE DOT
  179. 6500  PRINT  CHR$( PEEK(26880 +(22 -Y) *35 +(33 -X)));: RETURN 
  180. 6990  REM <CTRL-0x0a>========= SAVE MESSAGE =========
  181. 7000  PRINT  CHR$(20);: VTAB 1: HTAB 1: PRINT "ESC:Go back";
  182. 7010 WHERE = 4
  183. 7020 ME$(0) = "SAVE MESSAGE":ME$(1) = "Set Prefix":ME$(2) = "Save message":ME$(3) = "Catalog of Files":ME$(4) = "Catalog of Messages":ME$(5) = "Delete File":ME$(6) = "Exit":MX = 6: GOSUB 2000
  184. 7030  ON MI GOTO 10000,7100,12000,13000,14000,90
  185. 7040  GOTO 90
  186. 7100  CALL BOX,11,3,20,3: HOME : INVERSE : HTAB 3: PRINT "SAVE MESSAGE";
  187. 7105  IF PF$ = ""  THEN  CALL BOX,6,6,30,15: PRINT "No prefix has been set.": PRINT : PRINT "Press a key.": GOSUB 20000: GOTO 7000
  188. 7110  CALL BOX,5,21,32,4: HOME : PRINT "Enter name to save under or": PRINT "press ESC to exit.";
  189. 7120  POKE  -16368,0
  190. 7130  CALL BOX,6,6,30,15
  191. 7140  PRINT "Save as:": CALL GIMME,INPT: CALL BOX,7,8,17,3
  192. 7150 H = 1:V = 9:IW = 12:IN$ = MF$: GOSUB 55000
  193. 7160  IF   NOT ( LEN(IN$))  THEN 7000
  194. 7170  IF  LEFT$(IN$,3) < >"FM."  THEN IN$ = "FM." +IN$: IF  LEN(IN$) >15  THEN IN$ =  LEFT$(IN$,15)
  195. 7180  ONERR  GOTO 7500
  196. 7190  PRINT  CHR$(4)"OPEN "IN$: PRINT  CHR$(4)"CLOSE"
  197. 7200  ONERR  GOTO 60000
  198. 7210  PRINT  CHR$(4)"BSAVE "IN$",A$6900,l771,TTXT"
  199. 7220 MF$ = IN$
  200. 7230  GOTO 7000
  201. 7500  POKE 216,0: CALL 54915: CALL BOX,6,6,30,15: HOME : PRINT "Trouble saving file.": PRINT : PRINT "Press a key.": POKE  -16368,0: GET K$: CALL BOX,6,6,30,15: GOTO 7100
  202. 9990  REM <CTRL-0x0a>SET PREFIX BY PATH
  203. 10000  CALL BOX,11,3,20,3: HOME : INVERSE : HTAB 4: PRINT "SET PREFIX"
  204. 10010  CALL BOX,5,21,32,4
  205. 10020  POKE  -16368,0
  206. 10030  CALL BOX,6,6,30,15
  207. 10040  PRINT "One moment..."
  208. 10043  ONERR  GOTO 60000
  209. 10045  PRINT  CHR$(4)"PREFIX": INPUT PF$
  210. 10046 OP$ = PF$
  211. 10047 DC = 0
  212. 10048  NORMAL 
  213. 10050 S = 7:D = 2
  214. 10055  ONERR  GOTO 10090
  215. 10060  PRINT  CHR$(4)"PREFIX,S"S",D"D
  216. 10070  PRINT  CHR$(4)"PREFIX"
  217. 10080  INPUT K$
  218. 10082  IF K$ = "/RAM/"  THEN 10090
  219. 10085 DC = DC +1:S%(DC) = S:D%(DC) = D:SB$(DC) = K$
  220. 10090 D = D -1: IF D = 0  THEN D = 2:S = S -1
  221. 10092  IF S >0  THEN 10060
  222. 10095  INVERSE 
  223. 10100  POKE 216,0: HOME 
  224. 10120  GOSUB 10500
  225. 10125  IF DC = 0  THEN 11980
  226. 10130  ONERR  GOTO 10150
  227. 10140  PRINT  CHR$(4)"PREFIX"CP$
  228. 10150  POKE 216,0
  229. 10155  IF CP$ = ""  THEN CP$ = OP$
  230. 10160 PF$ = CP$
  231. 10165  GOTO 35000
  232. 10300  ONERR  GOTO 60000
  233. 10305  PRINT  CHR$(4)"PREFIX"CP$
  234. 10307 DC = 0
  235. 10308  PRINT  CHR$(12);: PRINT "Reading": PRINT CP$"..."
  236. 10310  PRINT  CHR$(4)"OPEN "CP$",TDIR"
  237. 10320  PRINT  CHR$(4)"READ "CP$
  238. 10330  INPUT K$: INPUT K$: INPUT K$
  239. 10340  INPUT K$: IF   NOT  LEN(K$)  OR DC = 129  THEN 10350
  240. 10341  IF  MID$ (K$,18,3) < >"DIR"  THEN 10340
  241. 10342 K$ =  MID$ (K$,2,15)
  242. 10344  IF  RIGHT$(K$,1) = " "  THEN K$ =  LEFT$(K$, LEN(K$) -1): GOTO 10344
  243. 10345 DC = DC +1:SB$(DC) = K$: GOTO 10340
  244. 10350  PRINT  CHR$(4)"CLOSE"
  245. 10360  IF DC < >0  THEN 10520
  246. 10370  CALL BOX,6,6,30,15: PRINT "There are no subdirectories": PRINT "in "CP$".": PRINT : PRINT "Prefix has been set.": PRINT : PRINT "Press a key.": GOSUB 20000
  247. 10375 PF$ = CP$
  248. 10380  GOTO 11960
  249. 10500  CALL BOX,11,3,20,3: HOME : INVERSE : HTAB 6: PRINT "SET PREFIX"
  250. 10505  IF DC = 0  THEN  CALL BOX,6,6,30,15: PRINT "No volumes on-line.": PRINT : PRINT "Press a key.": GOSUB 20000: GOTO 35000
  251. 10510  CALL BOX,5,21,32,4: HOME : PRINT "Arrows move highlight, RETURN": PRINT "reads directory, ESC exits.";
  252. 10515 CP$ = ""
  253. 10520  POKE  -16368,0: CALL BOX,6,6,30,15
  254. 10530  VTAB 17: HTAB 1: PRINT "Prefix:"CP$;
  255. 10540 TP = 0:BT = 7
  256. 10550 CS = 1
  257. 10560  IF BT >DC -1  THEN BT = DC -1
  258. 10570  POKE 35, PEEK(35) -3: PRINT  CHR$(12);: POKE 35, PEEK(35) +3
  259. 10580  FOR I = 1 TO BT -TP +1: VTAB I +7: HTAB 3
  260. 10590  PRINT " {} "SB$(I +TP)" "
  261. 10600  NEXT I
  262. 10610  VTAB 7: HTAB 3: PRINT "-------------------": VTAB 16: HTAB 3: PRINT "-------------------"
  263. 10620  IF TP >0  THEN  VTAB 7: HTAB 3: PRINT "^-------MORE------^"
  264. 10630  IF BT <DC -1  THEN  VTAB 16: HTAB 3: PRINT "`-------MORE------`"
  265. 10640  REM  Missing line
  266. 10650  VTAB CS +7: HTAB 3: NORMAL : PRINT " {} "SB$(CS +TP)" "
  267. 10660  GOSUB 20000: INVERSE : VTAB CS +7: HTAB 3: PRINT " {} "SB$(CS +TP)" "
  268. 10670  IF (K$ =  CHR$(11)  OR K$ =  CHR$(8))  AND CS = 1  AND TP >0  THEN TP = TP -8:BT = TP +7:CS = 8: GOTO 10570
  269. 10680  IF (K$ =  CHR$(11)  OR K$ =  CHR$(8))  THEN  IF CS >1  THEN CS = CS -1: GOTO 10640
  270. 10690  IF (K$ =  CHR$(10)  OR K$ =  CHR$(21))  AND CS = BT -TP +1  AND BT <DC -1  THEN TP = TP +8:BT = BT +8: GOTO 10550
  271. 10700  IF (K$ =  CHR$(10)  OR K$ =  CHR$(21))  THEN  IF CS <BT -TP +1  THEN CS = CS +1: GOTO 10640
  272. 10710  IF K$ =  CHR$(27)  THEN  RETURN 
  273. 10720  IF K$ =  CHR$(13)  THEN 10800
  274. 10740 QQ =  PEEK( -16336) - PEEK( -16336) + PEEK( -16336) - PEEK( -16336): GOTO 10640
  275. 10750  REM <CTRL-0x0a>SUBDIR ERRS
  276. 10760  IF  PEEK(222) = 5  THEN  POKE 216,0: GOTO 90
  277. 10770  PRINT "ERROR:" PEEK(222)
  278. 10780  GOTO 90
  279. 10790  REM <CTRL-0x0a>ADD DIR TO PATH
  280. 10800 CP$ = CP$ +SB$(CS +TP): IF  RIGHT$(CP$,1) < >"/"  THEN CP$ = CP$ +"/"
  281. 10810  GOTO 10300
  282. 11960  ON WHERE GOTO 3000,4000,6000,7000
  283. 11970  GOTO 90
  284. 11980  ONERR  GOTO 60000
  285. 11981  PRINT  CHR$(4)"PREFIX"PF$: GOTO 90
  286. 11990  REM <CTRL-0x0a>CATALOG OF FILES
  287. 12000 CT$ = "CATALOG OF FILES": GOTO 40000
  288. 12990  REM <CTRL-0x0a>CATALOG OF MESSAGES
  289. 13000 CT$ = "CATALOG MESSAGES": GOTO 40000
  290. 14000 S$ = "DELETE FILE": GOTO 30000
  291. 14010  ONERR  GOTO 60000
  292. 14020  PRINT  CHR$(4)"DELETE "SB$(CS +TP)
  293. 14030  GOTO 7000
  294. 19990  REM <CTRL-0x0a>GET A KEY
  295. 20000  POKE  -16368,0: WAIT  -16384,128: GET K$
  296. 20010  IF K$ > = "a"  AND K$ < = "z"  THEN K$ =  CHR$( ASC(K$) -32)
  297. 20020  RETURN 
  298. 30000  CALL BOX,11,3,20,3: HOME : INVERSE : HTAB 1: PRINT S$;
  299. 30010  IF PF$ = ""  THEN  CALL BOX,6,6,30,15: PRINT "No prefix has been set.": PRINT : PRINT "Press a key.": GOSUB 20000: GOTO 35000
  300. 30020  CALL BOX,5,21,32,4: HOME : PRINT "Arrows move highlight, RETURN": PRINT "reads directory, ESC exits.";
  301. 30030  POKE  -16368,0: CALL BOX,6,6,30,15
  302. 30040  ONERR  GOTO 60000
  303. 30050  PRINT  CHR$(4)"PREFIX"PF$
  304. 30060 DC = 0
  305. 30070  PRINT  CHR$(12);: PRINT "Reading": PRINT PF$"..."
  306. 30080  PRINT  CHR$(4)"OPEN "PF$",TDIR"
  307. 30090  PRINT  CHR$(4)"READ "PF$
  308. 30100  INPUT K$: INPUT K$: INPUT K$
  309. 30110  INPUT K$: IF   NOT  LEN(K$)  OR DC = 129  THEN 30160
  310. 30120  IF  MID$ (K$,2,3) < >"FM."  OR  MID$ (K$,18,3) < >"TXT"  OR  VAL( MID$ (K$,64,8)) < >771  THEN 30110
  311. 30130 K$ =  MID$ (K$,2,15)
  312. 30140  IF  RIGHT$(K$,1) = " "  THEN K$ =  LEFT$(K$, LEN(K$) -1): GOTO 30140
  313. 30150 DC = DC +1:SB$(DC) = K$: GOTO 30110
  314. 30160  PRINT  CHR$(4)"CLOSE"
  315. 30170  IF DC < >0  THEN 30200
  316. 30180  PRINT "There are no Message Files": PRINT "in "PF$".": PRINT : PRINT "Press a key.": GOSUB 20000
  317. 30190  GOTO 35000
  318. 30200  VTAB 17: HTAB 1: PRINT "Prefix:"PF$;
  319. 30210 TP = 0:BT = 7
  320. 30220 CS = 1
  321. 30230  IF BT >DC -1  THEN BT = DC -1
  322. 30240  POKE 35, PEEK(35) -3: PRINT  CHR$(12);: POKE 35, PEEK(35) +3
  323. 30250  FOR I = 1 TO BT -TP +1: VTAB I +7: HTAB 3
  324. 30260  PRINT " ~ "SB$(I +TP)" "
  325. 30270  NEXT I
  326. 30280  VTAB 7: HTAB 3: PRINT "------------------": VTAB 16: HTAB 3: PRINT "------------------"
  327. 30290  IF TP >0  THEN  VTAB 7: HTAB 3: PRINT "^------MORE------^"
  328. 30300  IF BT <DC -1  THEN  VTAB 16: HTAB 3: PRINT "`------MORE------`"
  329. 30310  REM   Missing line
  330. 30320  VTAB CS +7: HTAB 3: NORMAL : PRINT " ~ "SB$(CS +TP)" "
  331. 30330  GOSUB 20000: INVERSE : VTAB CS +7: HTAB 3: PRINT " ~ "SB$(CS +TP)" "
  332. 30340  IF (K$ =  CHR$(11)  OR K$ =  CHR$(8))  AND CS = 1  AND TP >0  THEN TP = TP -8:BT = TP +7:CS = 8: GOTO 30240
  333. 30350  IF (K$ =  CHR$(11)  OR K$ =  CHR$(8))  THEN  IF CS >1  THEN CS = CS -1: GOTO 30310
  334. 30360  IF (K$ =  CHR$(10)  OR K$ =  CHR$(21))  AND CS = BT -TP +1  AND BT <DC -1  THEN TP = TP +8:BT = BT +8: GOTO 30220
  335. 30370  IF (K$ =  CHR$(10)  OR K$ =  CHR$(21))  THEN  IF CS <BT -TP +1  THEN CS = CS +1: GOTO 30310
  336. 30380  IF K$ =  CHR$(27)  THEN 35000
  337. 30390  IF K$ =  CHR$(13)  AND WHERE = 1  THEN 3110
  338. 30395  IF K$ =  CHR$(13)  AND WHERE = 4  THEN 14010
  339. 30400 QQ =  PEEK( -16336) - PEEK( -16336) + PEEK( -16336) - PEEK( -16336): GOTO 30310
  340. 35000  IF WHERE = 1  THEN 3000
  341. 35010  IF WHERE = 4  THEN 7000
  342. 35020  GOTO 90
  343. 40000  CALL BOX,11,3,20,3: HOME : INVERSE : HTAB 1: PRINT CT$
  344. 40010  IF PF$ = ""  THEN  CALL BOX,6,6,30,15: PRINT "No prefix has been set.": PRINT : PRINT "Press a key.": GOSUB 20000: ON WHERE GOTO 3000,4000,6000,7000,300
  345. 40020  CALL BOX,5,21,32,4: HOME : PRINT "Arrows move highlight.": PRINT "RETURN exits.";
  346. 40030  POKE  -16368,0: CALL BOX,6,6,30,15
  347. 40040  ONERR  GOTO 60000
  348. 40050  PRINT  CHR$(4)"PREFIX"PF$
  349. 40060 DC = 0
  350. 40070  PRINT  CHR$(12);: PRINT "Reading": PRINT PF$"..."
  351. 40080  PRINT  CHR$(4)"OPEN "PF$",TDIR"
  352. 40090  PRINT  CHR$(4)"READ "PF$
  353. 40100  INPUT K$: INPUT K$: INPUT K$
  354. 40110  INPUT K$: IF   NOT  LEN(K$)  OR DC = 129  THEN 40160
  355. 40113 TYP$ =  MID$ (K$,18,3)
  356. 40115  IF CT$ = "CATALOG OF FILES"  THEN 40125
  357. 40120  IF  MID$ (K$,2,3) < >"FM."  OR  MID$ (K$,18,3) < >"TXT"  THEN 40110
  358. 40125  IF  MID$ (K$,2,3) = "FM."  AND TYP$ = "TXT"  AND  VAL( MID$ (K$,64,8)) = 771  THEN TYP$ = "~"
  359. 40126  IF TYP$ = "DIR"  THEN TYP$ = "{}"
  360. 40130 K$ =  MID$ (K$,2,15) +"  " +TYP$
  361. 40140  IF  RIGHT$(K$,1) = " "  THEN K$ =  LEFT$(K$, LEN(K$) -1): GOTO 40140
  362. 40150 DC = DC +1:SB$(DC) = K$: GOTO 40110
  363. 40160  PRINT  CHR$(4)"CLOSE"
  364. 40170  IF DC < >0  THEN 40200
  365. 40180  PRINT "No files found in": PRINT PF$".": PRINT : PRINT "Press a key.": GOSUB 20000
  366. 40190  GOTO 90
  367. 40200  VTAB 17: HTAB 1: PRINT "Prefix:"PF$;
  368. 40210 TP = 0:BT = 7
  369. 40220 CS = 1
  370. 40230  IF BT >DC -1  THEN BT = DC -1
  371. 40240  POKE 35, PEEK(35) -3: PRINT  CHR$(12);: POKE 35, PEEK(35) +3
  372. 40250  FOR I = 1 TO BT -TP +1: VTAB I +7: HTAB 3
  373. 40260  PRINT " "SB$(I +TP)" "
  374. 40270  NEXT I
  375. 40280  VTAB 7: HTAB 3: PRINT "------------------": VTAB 16: HTAB 3: PRINT "------------------"
  376. 40290  IF TP >0  THEN  VTAB 7: HTAB 3: PRINT "^------MORE------^"
  377. 40300  IF BT <DC -1  THEN  VTAB 16: HTAB 3: PRINT "`------MORE------`"
  378. 40310  REM   Missing line
  379. 40320  VTAB CS +7: HTAB 3: NORMAL : PRINT " "SB$(CS +TP)" "
  380. 40330  GOSUB 20000: INVERSE : VTAB CS +7: HTAB 3: PRINT " "SB$(CS +TP)" "
  381. 40340  IF (K$ =  CHR$(11)  OR K$ =  CHR$(8))  AND CS = 1  AND TP >0  THEN TP = TP -8:BT = TP +7:CS = 8: GOTO 40240
  382. 40350  IF (K$ =  CHR$(11)  OR K$ =  CHR$(8))  THEN  IF CS >1  THEN CS = CS -1: GOTO 40310
  383. 40360  IF (K$ =  CHR$(10)  OR K$ =  CHR$(21))  AND CS = BT -TP +1  AND BT <DC -1  THEN TP = TP +8:BT = BT +8: GOTO 40220
  384. 40370  IF (K$ =  CHR$(10)  OR K$ =  CHR$(21))  THEN  IF CS <BT -TP +1  THEN CS = CS +1: GOTO 40310
  385. 40380  IF K$ =  CHR$(27)  THEN 40500
  386. 40390  IF K$ =  CHR$(13)  THEN 40500
  387. 40400 QQ =  PEEK( -16336) - PEEK( -16336) + PEEK( -16336) - PEEK( -16336): GOTO 40310
  388. 40500  ON WHERE GOTO 3000,4000,6000,7000,300
  389. 40510  GOTO 90
  390. 50000  DATA @@@@@,DDD@D,JJ@@@,J_J_J,D^DOD
  391. 50001  DATA QHDBQ,^ENE^,DD@@@,HDDDH,BDDDB
  392. 50002  DATA UNDNU,DD_DD,@@@DB,@@_@@,@@@FF
  393. 50003  DATA PHDBA,NQQQN,DFDDN,OPNA_,OPNPO
  394. 50004  DATA QQ_PP,_AOPO,NAOQN,_HDBA,NQNQN
  395. 50005  DATA NQ^PN,@D@D@,@D@DB,HDBDH,@_@_@
  396. 50006  DATA BDHDB,NQL@D,NQ]AN,DJ_QQ,OQOQO
  397. 50007  DATA ^AAA^,OQQQO,_AOA_,_AOAA,^AYQ^
  398. 50008  DATA QQ_QQ,NDDDN,PPPQN,QIGIQ,AAAA_
  399. 50009  DATA Q[UQQ,QSUYQ,NQQQN,OQOAA,NQUIV
  400. 50010  DATA OQOIQ,^ANPO,_DDDD,QQQQN,QQQJD
  401. 50011  DATA QQU[Q,QJDJQ,QJDDD,_HDB_,_AAA_
  402. 50012  DATA ABDHP,_PPP_,DJQ@@,@@@@_
  403. 54980  REM <CTRL-0x0a>input in$<CTRL-0x0a>
  404. 54990  REM  pass in$:return in$:pass h,v for htab,vtab: pass iw for input width
  405. 55000 BS$ =  CHR$(8):ES$ =  CHR$(27):CR$ =  CHR$(13): VTAB V: HTAB H
  406. 55010  PRINT IN$;
  407. 55020  PRINT "_"BS$;
  408. 55030  IF  PEEK(49152) <128  THEN  PRINT " "BS$;: GOTO 55020
  409. 55040  GET K$
  410. 55050  IF K$ =  CHR$(24)  THEN  IF  LEN(IN$)  THEN  HTAB H: PRINT  SPC(  LEN(IN$) +1):IN$ = "": GOTO 55000
  411. 55060  IF K$ =  CHR$(127)  THEN K$ = BS$
  412. 55070  IF K$ = ES$  THEN IN$ = "": GOTO 55140
  413. 55080  IF K$ = BS$  THEN  IF  LEN(IN$) = 1  THEN IN$ = "": PRINT " "BS$BS$;: GOTO 55020
  414. 55090  IF K$ = BS$  THEN  IF  LEN(IN$)  THEN IN$ =  LEFT$(IN$, LEN(IN$) -1): PRINT " "BS$BS$;: GOTO 55020
  415. 55100  IF K$ = CR$  THEN  PRINT : GOTO 55140
  416. 55110  IF K$ >" "  THEN  IF  LEN(IN$) <IW  THEN IN$ = IN$ +K$: PRINT K$;: GOTO 55130
  417. 55120  PRINT  CHR$(7);
  418. 55130  GOTO 55020
  419. 55140  RETURN 
  420. 60000  PRINT  CHR$(4)"PR#0": POKE 48688,P1: POKE 48689,P2: PRINT  CHR$(21);: CALL BOX,1,1,40,24
  421. 60005  POKE  -16368,0
  422. 60006  INVERSE 
  423. 60007  IF  PEEK(222) = 255  THEN  PRINT : PRINT "You pressed Control-C."
  424. 60010  VTAB 10: HTAB 8: PRINT "Error " PEEK(222)", line " PEEK(218) + PEEK(219) *256".": HTAB 8: PRINT "Restarting.": VTAB 12: HTAB 14: PRINT "Press a key."
  425. 60015  CALL 54915
  426. 60020  GET K$: POKE 216,0: GOTO 90
  427. 61990  REM <CTRL-0x0a>HUMMY TONE P=PITCH,D=DURATION
  428. 62000  CALL  PEEK(121) + PEEK(122) *256 +32,P,D: REM   GET  COS g EXP R CHR$ ONERR P PLOT  TAN GET   GET  COS g EXP R CHR$ ONERR P PLOT  ATN GET  PLOT 0 TAB(  GR  MID$  MID$  = <CTRL-0x05>  OR  ATN GET <UNKNOWN TOKEN><CTRL-0x13> * = <CTRL-0x05> RESTORE  TAN GET  = <UNKNOWN TOKEN> RIGHT$<CTRL-0x01> =  MID$  IF  TAN GET  =  PEEK````
  429. 62010  RETURN